💡 AI 인사이트

🤖 AI가 여기에 결과를 출력합니다...

댓글 커뮤니티

쿠팡이벤트

이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

검색

    로딩 중이에요... 🐣

    [코담] 웹개발·실전 프로젝트·AI까지, 파이썬·장고의 모든것을 담아낸 강의와 개발 노트

    반복문과 while 반복문 | ✅ 저자: 이유정(박사)

    🔹 while 반복문이란?

    while은 조건이 True인 동안 계속해서 코드를 반복합니다.  
    조건이 False가 되면 반복이 멈춥니다.
    조건이 계속 True이면 무한 반복(무한 루프)이 될 수 있으므로  
    반복을 종료시킬 코드도 꼭 함께 넣어야 합니다.
    

    📖 문법, 구문(syntax): while 반복문 기본 문법

    while 조건식:     
    	실행할 코드
    
    • 조건식이 True이면 실행할 코드가 반복됨
    • 조건식이 False가 되면 반복 종료

    </> 예시코드1: 숫자 0부터 4까지 출력

    i = 0
    while i < 5:
        print(i)
        i += 1
    

    🖨️ 출력결과:

    0
    1
    2
    3
    4
    

    </> 예시코드2: 사용자 입력이 "exit"일 때 종료

    while True: # 무한반복 조건
        msg = input("입력하세요 (종료: exit): ")
        if msg == "exit":
            break
        print("입력한 내용:", msg)
    

    🖨️ 출력결과:

    입력하세요 (종료: exit): hello
    입력한 내용: hello
    입력하세요 (종료: exit): exit
    
    🔹 while 반복문: break 키워드 / continue 키워드
    while이나 for 반복문 안에서 자주 사용되는 break와 continue 
    키워드는 반복 흐름을 중간에 끊거나 건너뛸 때 매우 유용합니다.
    
    키워드 설명
    break 반복문 전체를 즉시 종료하고 빠져나감
    continue 이번 반복만 건너뛰고, 다음 반복으로 바로 진행
    이 두 키워드는 특정 조건일 때 반복 흐름을 유연하게 제어할 수 있게 해줍니다.

    </> 예시코드: break로 음수 입력 시 반복 종료하기

    while True:
        num = int(input("양수를 입력하세요 (음수 입력 시 종료): "))
        if num < 0:
            print("음수를 입력했으므로 종료합니다.")
            break
        print("입력한 숫자:", num)
    

    🖨️ 출력 결과 예시:

    양수를 입력하세요 (음수 입력 시 종료): 5  
    입력한 숫자: 5  
    양수를 입력하세요 (음수 입력 시 종료): 10  
    입력한 숫자: 10  
    양수를 입력하세요 (음수 입력 시 종료): -1  
    음수를 입력했으므로 종료합니다.
    

    🔍 해설:

    • while True로 무한 반복 시작
    • int(input(...))으로 숫자 입력
    • 음수면 break로 즉시 탈출
    • 양수면 계속 반복

    </> 예시코드1: 로그인 시도 3회 초과 시 강제 종료 (break 사용)

    correct_pw = "python123"
    attempts = 0  # 시도 횟수
    
    while True:
        pw = input("비밀번호를 입력하세요: ")
        attempts += 1
    
        if pw == correct_pw:
            print("로그인 성공!")
            break
        else:
            print("비밀번호가 틀렸습니다.")
    
        if attempts >= 3:
            print("3회 이상 실패. 계정이 잠겼습니다.")
            break
    

    🖨️ 출력 결과 예시 (사용자 입력 예시)

    비밀번호를 입력하세요: abc
    비밀번호가 틀렸습니다.
    비밀번호를 입력하세요: 1234
    비밀번호가 틀렸습니다.
    비밀번호를 입력하세요: 1111
    비밀번호가 틀렸습니다.
    3회 이상 실패. 계정이 잠겼습니다.
    

    또는 성공한 경우:

    비밀번호를 입력하세요: python123
    로그인 성공!
    

    🔍 해설 리스트

    • break는 두 가지 조건 중 하나일 때 사용됨:

      1. 비밀번호가 맞으면 로그인 성공 후 종료
      2. 3번 실패하면 강제 종료
    • attempts 변수로 반복 횟수 제한을 구현

    • 실제 로그인 시스템에서도 유사하게 사용됩니다


    </> 예시코드2: continue로 홀수만 출력하기

    i = 0 
    
    while i < 10:     
    	i += 1     
    	if i % 2 == 0:         
    		continue     
    	print(i)
    

    🖨️ 출력 결과:

    1 
    3 
    5 
    7 
    9
    

    🔍 해설:

    • i가 짝수일 때 continue를 만나면 print(i)는 건너뜀
    • 짝수는 출력하지 않고, 홀수만 출력

    </> 예시코드3: 학교에서 1번부터 5번까지 발표를 시키는데,
    3번 친구는 아파서 발표를 건너뛰기로 했다고 생각해보세요.

    i = 1  # 발표 번호 시작
    
    while i <= 5:
        if i == 3:
            i += 1      # 무한 루프 방지! 증가 먼저
            continue     # 3번은 건너뛰고 다음 반복으로 넘어감
        print(f"{i}번 학생 발표")
        i += 1
    

    🖨️ 출력결과:

    1번 학생 발표  
    2번 학생 발표  
    4번 학생 발표  
    5번 학생 발표
    

    </> 예시코드4: 위의 같은 내용을 for문으로 적용해 보겠습니다.

    for i in range(1, 6): # 1부터 5까지를 의미며 끝값은 포함되지 않음
        if i == 3:
            continue
        print(f"{i}번 학생 발표")
    

    🖨️ 출력결과:

    1번 학생 발표  
    2번 학생 발표  
    4번 학생 발표  
    5번 학생 발표
    

    ◽ for문과 while문의 간단한 정의 ❗

    • for 반복문은 리스트, 튜플, 문자열처럼 순서가 있는 자료를 하나씩 꺼내며 반복할 때 사용합니다.
    • 주로 반복 횟수가 정해져 있을 때 적합합니다.
    • 반면, while 반복문은 주어진 조건이 참(True)인 동안 계속 반복됩니다.
    • 즉, 언제 끝날지 모르는 반복이 필요할 때 사용합니다.

    📝 문제1] while문으로 1부터 100까지 출력하다가 10이 되면 멈추게 코딩하세요.

    ✅ 정답 코드:

    i = 1 
    
    while i <= 100:     
    	if i == 10:         
    		break     
    		print(i)     
    		i += 1
    

    🖨️ 출력 결과:

    1 
    2 
    3 
    4 
    5 
    6 
    7 
    8 
    9
    

    🔍 해설:

    • i == 10일 때 break가 실행되면서 반복 종료
    • 따라서 1부터 9까지만 출력됨

    📝 문제2] 1부터 10까지 짝수만 출력해보세요 (continue 사용)

    ✅ 정답 코드:

    i = 0 
    while i < 10:     
    	i += 1     
    	if i % 2 == 1:         
    		continue     
    	print(i)
    

    🖨️ 출력 결과:

    2 
    4 
    6 
    8 
    10
    

    🔍 해설:

    • i % 2 == 1 → 홀수일 경우 continue 실행
    • 홀수는 건너뛰고, 짝수만 출력됨

    📝 문제3] 사용자에게 숫자를 계속 입력받되,
    짝수일 때만 "짝수입니다"를 출력하고, 0을 입력하면 종료하세요.

    ✅ 정답 코드:

    while True:     
    	num = int(input("숫자 입력 (0 입력 시 종료): "))     
    	if num == 0:         
    		break     
    	if num % 2 == 1:         
    		continue     
    	print("짝수입니다.")
    

    🖨️ 출력 결과 예시:

    숫자 입력 (0 입력 시 종료): 3 
    숫자 입력 (0 입력 시 종료): 6 
    짝수입니다. 
    숫자 입력 (0 입력 시 종료): 7 
    숫자 입력 (0 입력 시 종료): 2 
    짝수입니다. 
    숫자 입력 (0 입력 시 종료): 0
    

    🔍 해설:

    • break: 0 입력 시 즉시 반복 종료
    • continue: 홀수일 경우 이후 코드를 건너뜀
    • print()는 짝수일 때만 실행

    📝 문제 4] 짝수만 출력하기 (for + continue 활용) 1부터 10까지의 숫자 중 홀수는 건너뛰고, 짝수만 출력하세요.
    continue 문을 꼭 활용하세요.

    ✨ 힌트:

    • i % 2 != 0 → 홀수면 continue로 건너뜀
    • 짝수일 때만 print(i) 실행됨

    ✅ 정답 코드:

    for i in range(1, 11):
        if i % 2 != 0: # 10 / 2 ...나머지 10%2 ---> False
            continue
        print(i)
    

    🖨️ 출력 결과:

    2
    4
    6
    8
    10
    

    📝 문제 5] 1~100 중 3의 배수이면서 5의 배수인 수의 합 구하기 1부터 100까지 중 3과 5의 공배수(즉, 15의 배수)의 합을 구하세요.

    ✨ 힌트:

    • 15의 배수3의 배수이면서 5의 배수
    • 누적 합은 +=로 저장됨

    ✅ 정답 코드:

    total = 0
    for i in range(1, 101):
        if i % 15 == 0:
            total += i
            
    print("합계:", total)
    

    🖨️ 출력 결과:

    합계: 315
    

    📝 문제 6] 문자열 뒤집기 (for 반복) 사용자로부터 문자열을 입력받고, 이를 뒤집어서 한 글자씩 출력하세요.
    (ex: "python" → n o h t y p)

    ✨ 힌트:

    • reversed()는 문자열을 역순으로 반복 가능하게 만듬
    • print(..., end=" ")는 줄바꿈 없이 출력

    ✅ 정답 코드:

    text = input("문자열 입력: ")
    for char in reversed(text):
        print(char, end=" ")
    

    🖨️ 출력 결과:

    n o h t y p 
    

    📝 문제 7] 무한 입력 받기 (while True + break) 숫자를 계속 입력받다가, 0이 입력되면 종료하고
    지금까지 입력한 숫자의 평균을 출력하세요.

    ✨ 힌트:

    • while True로 무한 반복
    • break로 0 입력 시 탈출
    • 입력한 수의 총합과 개수로 평균 계산

    ✅ 정답 코드:

    count = 0
    total = 0
    
    while True:
        num = int(input("숫자 입력 (0 입력시 종료): "))
        if num == 0:
            break
        count += 1
        total += num
    
    if count > 0:
        print("평균:", total / count)
    else:
        print("입력된 숫자가 없습니다.")
    

    🖨️ 출력 결과:

    숫자 입력 (0 입력시 종료): 5  
    숫자 입력 (0 입력시 종료): 7  
    숫자 입력 (0 입력시 종료): 8  
    숫자 입력 (0 입력시 종료): 0  
    평균: 6.666666666666667
    

    📝 문제 8] 2중 반복문으로 구구단 출력 (단짝 출력 제외) 2단부터 9단까지 구구단을 출력하되,
    곱하는 수가 단과 같은 경우는 출력하지 마세요.

    ✨ 힌트:

    • dan == i일 때 continue로 건너뜀
    • 각 단마다 ---로 구분

    ✅ 정답 코드:

    for dan in range(2, 10):
        for i in range(1, 10):
            if dan == i:
                continue
            print(f"{dan} x {i} = {dan*i}")
        print("---")
    

    🖨️ 출력 결과:

    2 x 1 = 2
    2 x 3 = 6
    ...
    3 x 1 = 3
    3 x 2 = 6
    3 x 4 = 12
    ...
    ---
    

    🔹 범위

    🔹 범위 함수 range()란?

    range() 함수는 숫자 범위를 생성할 때 사용하는 함수예요.  
    주로 for 반복문과 함께 사용해서 여러 번 반복할 때 씁니다.
    예를 들어 range(5)는 0부터 4까지 총 5개의 숫자를 생성해줍니다.  
    기본적으로 0부터 시작하며, 끝 값은 포함하지 않아요!
    

    📖 문법, 구문(syntax): 범위함수

    range(시작값, 끝값, 증가/감소값)
    
    • 시작값: 어디서부터 시작할지
    • 끝값: 어디까지 갈지 (하지만 이 값은 포함되지 않음!**)
    • 증가/감소값: 몇씩 더하거나 뺄지

    💡 range() 함수는 시작값부터 끝값 '직전'까지 반복합니다. 즉, 끝값은 포함되지 않습니다!


    🔹 for 반복문: 범위와 함께 사용하기

    for 반복문은 range() 함수와 함께 사용할 때 정해진 횟수만큼 
    반복 작업을 수행할 수 있어요.
    즉, range()가 숫자 범위를 만들어주고,  
    for는 그 숫자만큼 코드를 반복 실행해주는 역할을 해요.
    

    </> 예시코드: for 반복문으로 "안녕하세요"를 3번 출력하기

    count = int(input("몇 번 인사할까요? (1 이상 숫자): "))
    
    if count <= 0:
        print("1 이상의 숫자를 입력해주세요.")
    else:
        for i in range(1, count + 1):
            print(f"{i}번째 인사: 안녕하세요")
    

    🖨️ 출력결과: (입력: 3)

    몇 번 인사할까요? (1 이상 숫자): 3
    1번째 인사: 안녕하세요
    2번째 인사: 안녕하세요
    3번째 인사: 안녕하세요
    

    🖨️ 출력결과: (입력: 0)

    몇 번 인사할까요? (1 이상 숫자): 0
    1 이상의 숫자를 입력해주세요.
    

    🔍 해설:

    • range(3)은 0부터 2까지 총 3번 반복을 의미해요.
    • for i in range(3)은 3번 반복하면서 "안녕하세요"를 출력해줍니다.
    • 여기서 변수 i는 반복 횟수를 세는 용도이고, 꼭 사용하지 않아도 돼요.

    📝 문제1] "Python"을 5번 출력하세요.

    ✅ 정답 코드:

    for i in range(5):     
    	print("Python")
    

    🖨️ 출력 결과:

    Python Python Python Python Python
    

    🔍 해설:

    • range(5)는 0부터 4까지 → 총 5번 반복해요.
    • 그동안 "Python"이라는 문자열을 계속 출력합니다.

    📝 문제2] 1부터 100 사이의 숫자 중에서, 3의 배수이면서 5의 배수가 아닌 숫자만 거꾸로 출력하세요.

    ✅ 정답 코드:

    # i % 3 == 0 and i % 5 != 0
    for i in range(100 , 0 , -1):
    	if i % 3 == 0 and i % 5 != 0:
    		print(i)
    

    🖨️ 출력 결과:

    99  
    96  
    93  
    ...  
    6  
    3
    

    🔍 해설:

    • range(100, 0, -1) → 100부터 1까지 1씩 감소
    • i % 3 == 0 → 3의 배수인 경우
    • i % 5 != 0 → 5의 배수가 아닌 경우
    • 두 조건을 모두 만족하는 숫자만 출력
    • 실무에서 많이 쓰이는 조건 필터링 + 역순 반복 예시

    📝 문제3] 10개의 최근 뉴스 제목이 리스트에 저장돼 있습니다.
    가장 최근 항목부터 번호를 붙여서 1번부터 10번까지 출력하세요.

    news = [
        "기후 변화 대응 강화",
        "우주 탐사 프로젝트 발표",
        "AI 기술 발전 논의",
        "경제 성장률 발표",
        "국제 협력 강화",
        "로봇 산업 급성장",
        "신약 개발 성공",
        "스마트시티 확산",
        "탄소 중립 계획 발표",
        "자율주행차 상용화"
    ]
    

    🖨️ 출력 결과:

    1위: 자율주행차 상용화  
    2위: 탄소 중립 계획 발표  
    3위: 스마트시티 확산  
    ...  
    10위: 기후 변화 대응 강화
    

    ✅ 정답 코드:

    for i in range(len(news) - 1, -1, -1): # range(9, 0, -1)
        print(f"{len(news) - i}위: {news[i]}")
    

    🔍 해설:

    • range(len(news) - 1, -1, -1) → 리스트를 역순으로 순회

    • len(news) - i는 1부터 10까지 자동으로 증가 (번호 부여)

    • 최신 뉴스일수록 먼저 출력 (실제 뉴스 앱, 채팅 로그 등에서 사용하는 방식)

      이런 패턴은 실무 API 응답 정렬, 로그 추적, 순위 매기기등에 자주 활용됩니다.


    📖 자료구조개념:

    • First In First Out : FIFO(선입선출) 줄서기 -> 큐(Queue)
    • Last In First Out : (LIFO) (후입선출) 접시쌓기 -> 스택(Stack)

    </> 예시코드: 출석부에서 결석자 번호만 출력하기

    students = ["민수", "영희", "철수", "지민", "수진"]
    absent = [1, 3]  # 결석한 학생의 번호 (0부터 시작)
    
    for i in range(len(students)):
        if i in absent:
            print(f"{i+1}{students[i]} 결석")
    

    🖨️ 출력결과:

    2번 영희 결석
    4번 지민 결석
    

    🔍 해설 리스트

    • range(len(students))는 학생 수만큼 인덱스를 반복합니다 → range(5)
    • i in absent로 결석 여부를 판단하여 출력합니다.
    • i+1은 학생 번호처럼 1부터 표시하려는 목적입니다.
    • 이 구조는 명단 처리, 로그 분석, 사용자 인덱싱 등 다양한 실무 상황에서 응용됩니다.

    📝 문제1] range()로 1부터 10까지 출력하기

    ✅ 정답 코드:

    for i in range(1, 11):     
    	print(i)
    

    🖨️ 출력 결과:

    1 
    2 
    3 
    4 
    5 
    6 
    7 
    8 
    9 
    10
    

    🔍 해설:

    • range(1, 11)1부터 10까지 생성합니다.
    • 끝 숫자 11은 포함되지 않으므로, 10까지 출력돼요.

    📝 문제2] 0부터 20까지 2씩 증가하며 출력하기

    ✅ 정답 코드:

    for i in range(0, 21, 2):     
    	print(i)
    

    🖨️ 출력 결과:

    0 
    2 
    4 
    6 
    8 
    10 
    12 
    14 
    16 
    18 
    20
    

    🔍 해설:

    • range(시작, 끝, 증가폭) 형식으로 사용돼요.
    • range(0, 21, 2)0부터 20까지 2씩 증가합니다.
    • 끝값 21은 포함되지 않아요.

    🔹 for 반복문: 반대로 반복하기

    for 반복문은 숫자를 감소하는 방향으로도 반복할 수 있어요.  
    이럴 때는 range() 함수에 감소폭을 설정하면 돼요.
    range(시작, 끝, -1)처럼 작성하면, 거꾸로 반복이 가능해요.  
    끝값은 여전히 포함되지 않는 것을 주의해야 해요!
    

    </> 예시코드: 5부터 1까지 숫자 출력하기

    start = int(input("시작 숫자 입력 (예: 10): "))
    end = int(input("끝 숫자 입력 (예: 1): "))
    step = int(input("감소할 수 (양의 정수): "))
    
    if start <= end or step <= 0: # or and 
        print("시작값은 끝값보다 커야 하고, 감소폭은 양수여야 합니다.")
    else:
        print(f"\n - {start}부터 {end}까지 {step}씩 감소하면서 출력:")
        for i in range(start, end - 1, -step):
            print(i)
    

    🖨️ 출력결과: (입력: 10, 1, 2)

    시작 숫자 입력 (예: 10): 10
    끝 숫자 입력 (예: 1): 1
    감소할 수 (양의 정수): 2
    
    - 10부터 1까지 2씩 감소하면서 출력:
    10
    8
    6
    4
    2
    

    🖨️ 출력결과: (입력 오류: 시작값이 작거나 step이 음수)

    시작 숫자 입력 (예: 10): 3
    끝 숫자 입력 (예: 10): 10
    감소할 수 (양의 정수): 1
    
    시작값은 끝값보다 커야 하고, 감소폭은 양수여야 합니다.
    

    🔍 해설:

    • int(input(...)) : 사용자에게 숫자 입력 받음
    • if start <= end or step <= 0 : 잘못된 입력에 대한 유효성 검사
    • range(start, end - 1, -step) : 감소 방향으로 반복 (end 포함하려면 -1 필요)
    • print(i) : 현재 숫자 출력

    📝 문제1] 10부터 1까지 거꾸로 출력해보세요.

    ✅ 정답 코드:

    for i in range(10, 0, -1):     
    	print(i)
    

    🖨️ 출력 결과:

    10 
    9 
    8 
    7 
    6 
    5 
    4 
    3 
    2 
    1
    

    🔍 해설:

    • 시작값은 10, 끝값은 0 → 0은 포함되지 않기 때문에 1까지만 출력돼요.
    • range(10, 0, -1)은 10부터 1까지 감소하며 반복합니다.

    📝 문제2] 리스트 [5, 4, 3, 2, 1]을 거꾸로 출력해보세요.

    ✅ 정답 코드:

    numbers = [5, 4, 3, 2, 1]  
    for n in numbers:     
    	print(n)
    

    🖨️ 출력 결과:

    5 
    4 
    3 
    2 
    1
    

    🔍 해설:

    • 이 문제는 실제 range()를 사용하지 않아도 리스트 자체가 역순이기 때문에 그대로 출력하면 됩니다.
    • 또는 reversed() 함수를 사용해도 됩니다.

    📝 문제3] range()for문을 사용해서 20부터 2까지 2씩 감소하며 출력해보세요.

    ✅ 정답 코드:

    for i in range(20, 1, -2):     
    	print(i)
    

    🖨️ 출력 결과:

    20 
    18 
    16 
    14 
    12 
    10 
    8 
    6 
    4 
    2
    

    🔍 해설:

    • range(20, 1, -2)는 20부터 시작해서 2씩 감소해요.
    • 끝값인 1은 포함되지 않기 때문에 2까지만 출력됩니다.

    📝 문제4] 최근 활동 로그를 최신순으로 출력하기 회사 내부 시스템에서는 사용자 활동 로그를 리스트에 시간순으로 저장합니다.
    이 리스트를 최신순(거꾸로) 출력하세요.

    logs = ["로그인", "파일 업로드", "메일 확인", "로그아웃", "재로그인"]
    

    위 리스트는 오래된 기록이 먼저, 최근 기록이 마지막에 저장되어 있습니다.
    가장 최근 활동부터 하나씩 출력하는 코드를 작성하세요.

    🖨️ 출력 결과:

    [4] 재로그인
    [3] 로그아웃
    [2] 메일 확인
    [1] 파일 업로드
    [0] 로그인
    

    ✅ 정답 코드: range(시작값, 끝값, 증가/감소값) -> range(4, -1, -1)

    logs = ["로그인", "파일 업로드", "메일 확인", "로그아웃", "재로그인"]
    
    for i in range(len(logs) - 1, -1, -1):  # 4부터 0까지 거꾸로
        print(f"[{i}] {logs[i]}")
    
    logs == range(5) → [0, 1, 2, 3, 4] 
    

    🔍 해설:

    • 리스트 길이: len(logs) = 5
    • 마지막 인덱스: 4
    • 우리가 거꾸로 돌고 싶어요 → 인덱스: 4 → 3 → 2 → 1 → 0
    # 그래서 이렇게 작성됩니다.
    for i in range(4, -1, -1):
        print(f"[{i}] {logs[i]}")
    
    • 4 부터 시작
    • 4 부터 0까지 (종료값 -1은 포함 안 됨)
    • 반복되는 i: [4, 3, 2, 1, 0]
    • 즉, i = 4 → 3 → 2 → 1 → 0

    🔹 for 반복문: 리스트와 조합하기

    for 반복문은 range()뿐만 아니라 리스트(list)와도 함께 사용할 수 
    있어요. 리스트 안에 있는 값 하나하나를 순서대로 꺼내서 반복 작업을
    할 수 있습니다.
    

    </> 예시코드: 리스트의 요소 하나씩 출력하기

    fruits = ["사과", "바나나", "포도", "수박", "딸기", "참외", "블루베리"]
    
    limit = int(input("몇 글자 이하인 과일만 출력할까요? "))
    
    print(f"\n 📝 {limit}글자 이하 과일 목록:")
    print("-" * 30)
    
    for fruit in fruits:
        if len(fruit) > limit: # 3 > 2
            continue  # 조건에 맞지 않으면 건너뜀
        print(f"{fruit} ({len(fruit)}글자)")
    

    🖨️ 출력결과:

    몇 글자 이하인 과일만 출력할까요? 2
    
    📝 2글자 이하 과일 목록:
    ------------------------------
    사과 (2글자)
    포도 (2글자)
    수박 (2글자)
    딸기 (2글자)
    참외 (2글자)
    

    🔍 해설:

    • 리스트 fruits에 3개의 과일이 들어 있어요.
    • for fruit in fruits:는 리스트의 각 요소를 하나씩 꺼내서 fruit에 저장해요.
    • 그래서 print(fruit)가 3번 반복되며 각각 출력됩니다.

    📝 문제1] 점수 리스트 [100, 85, 90]의 모든 점수를 출력해보세요.

    ✅ 정답 코드:

    scores = [100, 85, 90]  
    for score in scores:     
    	print(score)
    

    🖨️ 출력 결과:

    100 85 90
    

    🔍 해설:

    • 리스트 scores에는 점수 3개가 들어있어요.
    • for score in scores:는 각 점수를 하나씩 꺼내서 print()로 출력해요.

    📝 문제2] 여러 명의 사용자 이름이 담긴 리스트가 있습니다.
    이름이 2글자인 경우에는 "안녕하세요, OO님!",
    이름이 3글자인 경우에는 "환영합니다, OOO 고객님!"이라고 다르게 출력하세요.

    names = ["민수", "영희", "김철수", "박지민", "최연"]
    

    🖨️ 출력 결과:

    안녕하세요, 민수님!
    안녕하세요, 영희님!
    환영합니다, 김철수 고객님!
    환영합니다, 박지민 고객님!
    안녕하세요, 최연님!
    

    ✅ 정답 코드:

    names = ["민수", "영희", "김철수", "박지민", "최연"]
    
    for name in names:
        if len(name) == 2:
            print(f"안녕하세요, {name}님!")
        elif len(name) == 3:
            print(f"환영합니다, {name} 고객님!")
    

    🔍 해설:

    • len(name)을 통해 이름 길이를 검사함
    • 조건에 따라 서로 다른 인사말을 출력
    • 실무에서 사용자 유형 분류, 맞춤 메시지 발송 로직 등에 사용되는 패턴

    📝 문제3] 숫자 리스트 [10, 20, 30, 40, 50]가 있습니다.
    각 숫자에 대해 "값: 10, 제곱: 100" 형식으로 출력하세요.

    🖨️ 출력 결과:

    값: 10, 제곱: 100  
    값: 20, 제곱: 400  
    값: 30, 제곱: 900  
    값: 40, 제곱: 1600  
    값: 50, 제곱: 2500
    

    ✅ 정답 코드:

    numbers = [10, 20, 30, 40, 50]
    
    for n in numbers:
        square = n ** 2
        print(f"값: {n}, 제곱: {square}")
    

    🔍 해설:

    • ** 2는 거듭제곱 연산자 → n의 제곱
    • 문자열 포맷팅을 이용해 보기 좋게 출력
    • 실무에서는 숫자 계산 결과 로깅, 보고서 출력, 데이터 요약 출력 등에 유용

    🔹 중첩으로 피라미드 만들기

    중첩 반복문(nested loop)이란 반복문 안에 또 다른 반복문이 있는 
    구조를 말해요.  
    특히 별(*) 모양을 이용해서 피라미드 형태 출력을 만들 때 자주 
    사용됩니다.
    바깥쪽 반복문은 행(줄 수)를 제어하고,  
    안쪽 반복문은 열(각 줄의 출력 내용)을 제어해요.
    

    ◽ 중첩for문의 실행 흐름:

    for i in range(1, 4):       # 바깥 반복문
        for j in range(1, 4):   # 안쪽 반복문
            print(f"i={i}, j={j}")
    

    🔁 실제 실행 흐름:

    1. i = 1

      • j = 1 → 실행
      • j = 2 → 실행
      • j = 3 → 실행
    2. i = 2

      • j = 1 → 실행
      • j = 2 → 실행
      • j = 3 → 실행
    3. i = 3

      • j = 1 → 실행
      • j = 2 → 실행
      • j = 3 → 실행

    🖨️ 출력결과:

    i=1, j=1
    i=1, j=2
    i=1, j=3
    i=2, j=1
    i=2, j=2
    i=2, j=3
    i=3, j=1
    i=3, j=2
    i=3, j=3
    

    </> 예시코드: 별 * 을 이용한 5줄짜리 피라미드 만들기

    for i in range(1, 6): # 1~5까지 반복 (줄 수)     
    	for j in range(i):    # i번 반복하며 별 출력         
    		print("*", end="")    # 줄바꿈 없이 출력     
    	print()               # 줄바꿈
    

    🖨️ 출력결과:

    *
    ** 
    ***
    ****
    *****
    

    🔍 해설:

    • 바깥쪽 for i in range(1, 6)총 5줄을 반복해요.
    • 안쪽 for j in range(i)는 각 줄마다 i개의 별을 출력해요.
    • print("*", end="")는 별을 한 줄에 이어서 출력하게 만들고,
      print()는 별을 다 출력한 뒤 줄바꿈을 해줍니다.
    i 내부 반복(j) 출력 내용
    i = 1 j: 0 *
    i = 2 j: 0, 1 **
    i = 3 j: 0, 1, 2 ***
    i = 4 j: 0, 1, 2, 3 ****
    i = 5 j: 0, 1, 2, 3, 4 *****

    📝 문제1] 4줄짜리 피라미드 출력해보세요.

    ✅ 정답 코드:

    for i in range(1, 5):     
    	for j in range(i):         
    		print("*", end="")     
    	print()
    

    🖨️ 출력 결과:

    *
    **
    ***
    ****
    

    🔍 해설:

    • range(1, 5)는 1~4까지 → 4줄 반복
    • 각 줄마다 별 개수를 i번만큼 출력해요.

    📝 문제2] 피라미드를 역방향으로 출력해보세요. (5줄)

    ✅ 정답 코드:

    for i in range(5, 0, -1):  # 5부터 1까지 감소     
    	for j in range(i):     # i번 반복하며 별 출력
    		print("*", end="")     
    	print()
    

    🖨️ 출력 결과:

    *****
    ****
    ***
    **
    *
    

    🔍 해설:

    • range(5, 0, -1)5 → 4 → 3 → 2 → 1 순서로 줄 수 감소
    • 각 줄마다 줄 수만큼 별을 찍어요

    📝 문제3] 공백과 별을 조합해서 정렬된 피라미드 출력 (5줄)

    ✅ 정답 코드:

    for i in range(1, 5):
        for j in range(4 - i):       # 왼쪽 공백
            print(" ", end="")
        for k in range(i):           # 오른쪽 별
            print("*", end="")
        print()                    # 오른쪽 별
    

    🖨️ 출력 결과:

        *
       **
      ***
     ****
    *****
    

    🔍 해설:

    • " " * (5 - i)는 줄이 내려갈수록 공백이 줄어들도록 설정
    • "*"는 줄 번호(i)만큼 출력
    • 결과적으로 오른쪽 정렬된 피라미드가 출력됩니다.

    🔹 while 반복문: for 반복문처럼 사용하기

    for 반복문은 정해진 횟수만큼 반복하는 데에 매우 편리하지만,  
    while문을 사용해서도 for문과 같은 반복을 만들 수 있어요.
    핵심은 초기값, 조건, 증감식을 직접 명시적으로 작성해야 한다는 
    점이에요.
    

    </> 예시코드: for문처럼 0부터 4까지 출력하기 (while 사용)

    i = 0
    
    while i < 5:     
    	print(i)     
    	i += 1
    

    🖨️ 출력결과:

    0 
    1 
    2 
    3 
    4
    

    🔍 해설:

    • for i in range(5)와 똑같은 반복을 while문으로 만든 예제예요.
    • i = 0으로 시작해서 i < 5인 동안 반복
    • i += 1로 값을 증가시키며 반복 횟수를 제어

    </> 예시코드: 1부터 시작해 짝수만 누적하여 합이 30을 넘기면 종료하는 while 반복

    i = 1
    total = 0
    
    while True: # 무한반복 설정
        if i % 2 == 0: # 현재 숫자 i가 짝수면
            total += i # 누적합에 더하고
            print(f"현재 짝수: {i}, 누적 합계: {total}") # 출력하고
            if total > 30: # 여기서 또 조건을 확인해서
                print("합계가 30을 넘었습니다. 반복 종료.")
                break # 조건 만족 시 반복 종료
        i += 1 # i를 다음 숫자로 증가
    

    🖨️ 출력 결과 예시:

    현재 짝수: 2, 누적 합계: 2  
    현재 짝수: 4, 누적 합계: 6  
    현재 짝수: 6, 누적 합계: 12  
    현재 짝수: 8, 누적 합계: 20  
    현재 짝수: 10, 누적 합계: 30  
    현재 짝수: 12, 누적 합계: 42  
    합계가 30을 넘었습니다. 반복 종료.
    

    🔍 해설

    • while True로 무한 반복 설정
    • i % 2 == 0: 짝수일 때만 처리
    • 짝수들을 누적 합계(total)에 더함
    • 합이 30을 넘는 순간 break로 종료
    • i += 1로 카운터 증가

    📝 문제1] while문으로 1부터 5까지 출력해보세요.

    ✅ 정답 코드:

    i = 1 
    
    while i <= 5:     
    	print(i)     
    	i += 1
    
    for i in range(1,6):
    	print(i)
    

    🖨️ 출력 결과:

    1 
    2 
    3 
    4 
    5
    

    🔍 해설:

    • i = 1부터 시작해서 i <= 5일 때 반복
    • for i in range(1, 6)과 같은 결과를 while로 표현한 코드예요.

    📝 문제2] 리스트 리스트 [12, 7, 25, 18, 5, 30]에서
    짝수인 숫자만 누적하여 더하다가, 누적합이 50을 넘으면 반복을 멈추고,
    누적합과 더해진 숫자들만 출력하세요.

    🖨️ 출력 결과:

    누적합: 60
    더한 숫자들: [12, 18, 30]
    

    ✅ 정답 코드:

    numbers = [12, 7, 25, 18, 5, 30]
    i = 0
    total = 0
    added = []
    
    while i < len(numbers): # for i in numbers
        if numbers[i] % 2 == 0:
            total += numbers[i]
            added.append(numbers[i])
            if total > 50:
                break
        i += 1 # for문일 경우 필요없음.
    
    print("누적합:", total)
    print("더한 숫자들:", added)
    

    🔍 해설:

    • i를 인덱스로 사용해서 리스트를 while문으로 순회합니다.
    • numbers[i] % 2 == 0 → 짝수만 선택
    • total += numbers[i]로 누적합 계산
    • added.append(numbers[i])로 어떤 숫자들이 더해졌는지 추적
    • 누적합이 50을 넘으면 break로 반복 종료
    • 실무에서도 조건 누적 및 로그 추적 시 매우 유용한 패턴입니다.

    📝 문제3] while문으로 구구단 2단을 출력해보세요.

    ✅ 정답 코드:

    i = 1 
    
    while i <= 9:     
    	print("2 x", i, "=", 2 * i)     
    	i += 1
    

    🖨️ 출력 결과:

    2 x 1 = 2
    2 x 2 = 4
    2 x 3 = 6
    2 x 4 = 8
    2 x 5 = 10
    2 x 6 = 12
    2 x 7 = 14
    2 x 8 = 16
    2 x 9 = 18
    

    🔍 해설:

    • i = 1부터 시작해서 i <= 9일 때 반복 → 1단부터 9단까지 출력 가능
    • print() 안에서 곱셈 결과를 바로 계산해서 출력함
    • for i in range(1, 10)과 같은 반복을 while로 구성한 예제예요

    📝 문제4] 사용자가 "yes"를 입력하면 "Hello"를 출력합니다.
    총 3번까지 입력 기회를 주고, "yes"가 입력될 때만 "Hello"를 출력하세요.

    🖨️ 예시 실행 (사용자 입력 기준):

    출력할까요? (yes 입력): no
    출력할까요? (yes 입력): yes
    Hello
    출력할까요? (yes 입력): yes
    Hello
    총 2번 Hello를 출력했습니다.
    

    ✅ 정답 코드:

    count = 0
    printed = 0
    
    while count < 3:
        reply = input("출력할까요? (yes 입력): ").strip()
        if reply == "yes":
            print("Hello")
            printed += 1
        count += 1
    
    print(f"총 {printed}번 Hello를 출력했습니다.")
    

    🔍 해설:

    • count는 입력 횟수 (총 3번까지)
    • 사용자가 "yes"라고 입력했을 때만 "Hello" 출력
    • 출력된 횟수는 printed에 누적
    • 실무에서도 반복 조건 + 사용자 응답에 따라 로직 처리할 때 매우 자주 쓰입니다

    🔹 while 반복문: 상태를 기반으로 반복하기

    while 반복문은 반복 횟수가 정해지지 않았을 때,
    특정 상태(state)가 유지되는 동안 반복하기에 매우 적합합니다.
    

    🧐 상황예시

    • 로그인 상태가 False인 동안 계속 로그인 시도
    • 사용자가 "종료"라고 입력하기 전까지 계속 입력받기
    • 플레이어의 체력이 0보다 클 때까지 게임 반복

    while 반복문의 상태 기반 구조는 이런 식입니다:

    상태 = True
    
    while 상태:
        작업 수행
        if 어떤 조건을 만나면:
            상태 = False
    
    즉, 상태 변화가 없으면 무한 반복하고,  
    조건에 따라 상태를 False로 변경하여 종료시키는 방식입니다.
    

    </> 예시코드: 사용자가 "exit"을 입력할 때까지 계속 입력받기

    command = ""
    while command != "exit":     
    	command = input("명령어를 입력하세요 (종료하려면 exit): ")
    

    🖨️ 출력결과 예시:

    명령어를 입력하세요 (종료하려면 exit): hello 
    명령어를 입력하세요 (종료하려면 exit): run 
    명령어를 입력하세요 (종료하려면 exit): exit
    

    🔍 해설:

    • command라는 상태 변수가 "exit"이 될 때까지 반복해요.
    • 사용자의 입력을 계속 받아서 상태를 바꿔주고,
    • "exit"을 입력하면 조건이 False가 되어 종료됩니다.

    </> 예시코드: 로그인 시도 제한 시스템 사용자에게 아이디를 계속 입력받고, 맞는 아이디("admin")가 입력되면 "로그인 성공" 출력 후 종료 3번 이상 실패하면 "접속 차단" 메시지와 함께 종료

    MAX_TRIES = 3 # 로그인 시도 가능 최대 횟수
    attempts = 0 # 현재까지 시도한 횟수를 저장하는 변수
    user_id = "" # 사용자의 입력 아이디를 저장할 변수 (초기값은 빈 문자열)
    
    # "admin" 아이디가 입력될 때까지 반복
    while user_id != "admin":
        user_id = input("아이디를 입력하세요: ").strip()
        attempts += 1 # 시도 횟수 1 증가
    
        if user_id == "admin": # 올바른 아이디인 경우
            print("로그인 성공!") # 로그인 성공 메시지 출력
            break # 반복문 종료
    
        if attempts >= MAX_TRIES: # 최대 시도 횟수에 도달한 경우
            print("접속 차단: 로그인 시도 횟수 초과") # 차단 메시지 출력
            break  # 반복문 종료
        else:
            print(f"잘못된 아이디입니다. ({attempts}회 실패)")
            # 잘못된 아이디를 입력한 경우, 현재까지 실패한 횟수를 함께 출력
    

    if elif... 대신 if문을 두번 사용한 이유는 코드 흐름의 모든 조건을 독립적으로 검사하기 위해서입니다.

    if user_id == "admin":  # # 조건1이 참이면 실행
        print("로그인 성공!")
        break
    
    if attempts >= MAX_TRIES: # 조건2도 별개로 검사
        print("접속 차단: 로그인 시도 횟수 초과")
        break
    

    if ... 조건이 참이면 실행 elif ... 앞의 if가 거짓일 때만 실행 즉 두조건 모두 검사가 가능한 상태로 만들기 위해 if를 별개로 사용했습니다.

    🖨️ 출력 예시 (실패 후 성공)

    아이디를 입력하세요: test  
    잘못된 아이디입니다. (1회 실패)  
    아이디를 입력하세요: guest  
    잘못된 아이디입니다. (2회 실패)  
    아이디를 입력하세요: admin  
    로그인 성공!
    

    📝 문제1] 비밀번호가 맞을 때까지 계속 입력받기

    ✅ 정답 코드:

    password = "" 
    while password != "1234":     
    	password = input("비밀번호를 입력하세요: ") 
    	
    print("접속 성공!")
    

    🖨️ 출력 결과 예시:

    비밀번호를 입력하세요: 0000 
    비밀번호를 입력하세요: pass 
    비밀번호를 입력하세요: 1234 
    접속 성공!
    

    🔍 해설:

    • password"1234"와 같아질 때까지 반복
    • 맞는 비밀번호를 입력하면 반복 종료 → 접속 성공 메시지 출력

    📝 문제2] True 상태를 활용한 무한 반복 → break로 종료

    ✅ 정답 코드:

    while True:     
    	answer = input("종료하시겠습니까? (y/n): ") 
    	if answer == "y":         
    		print("프로그램을 종료합니다.")         
    		break
    

    🖨️ 출력 결과 예시:

    종료하시겠습니까? (y/n): n
    종료하시겠습니까? (y/n): y
    프로그램을 종료합니다.
    

    🔍 해설:

    • while True는 무조건 반복하는 구조 (무한 루프)
    • if문으로 상태를 체크하고, 조건이 충족되면 break로 탈출
    • 실제 프로그램에서 종료 조건 감지 등에 자주 사용돼요

    📝 문제3] 로그인 상태가 False이면 계속 로그인 시도

    ✅ 정답 코드:

    is_logged_in = False 
    
    while not is_logged_in:     
    	user = input("아이디 입력: ")     
    	if user == "admin":         
    		is_logged_in = True         
    		print("로그인 성공!")     
    	else:         
    		print("아이디가 틀렸습니다.")
    

    🖨️ 출력 결과 예시:

    아이디 입력: guest 
    아이디가 틀렸습니다. 
    아이디 입력: admin 
    로그인 성공!
    

    🔍 해설:

    • 상태 변수 is_logged_inFalse인 동안 반복
    • "admin"이 입력되면 상태가 True로 바뀌며 반복 종료
    • 상태를 조건으로 쓰는 대표적인 예제 구조
    • while 반복문은 상태 기반 로직에 매우 유용하며,
      입력 대기, 사용자 응답 처리, 게임 루프 등에도 자주 활용됩니다.

    🔹 while 반복문: 시간을 기반으로 반복하기

    while 반복문은 시간 조건을 기준으로 반복을 제어할 수도 있습니다.  
    예를 들어, 5초 동안 실행, 1초마다 동작, 특정 시각까지 반복 등의 
    작업이 가능합니다.
    

    time 모듈이란? 파이썬에서 시간 관련 작업을 할 수 있게 해주는 도구입니다.

    🧐 상황예시:

    • 현재 시각 확인
    • 시간 차이 측정
    • 일정 시간 멈추기(sleep)

    </> 예시코드: 5초 동안 "반복 중..."이라는 문장을 1초 간격으로 출력

    import time  # 시간 관련 기능을 사용하기 위해 불러옴
    
    start = time.time()  # 현재 시각을 저장해요
    
    while time.time() - start < 5:  # 경과 시간이 5초가 될 때까지 반복
        print("반복 중...")         # 메시지 출력
        time.sleep(1)               # 1초 쉬고 다시 반복
    

    🖨️ 출력 결과 (1초 간격으로 출력):

    반복 중...
    반복 중...
    반복 중...
    반복 중...
    반복 중...
    

    🔍 해설:

    • time.time() → 지금 시각을 초로 알려줍니다. 예: 1715325678.45894
    • start에 시작 시간을 저장합니다.
    • while 조건:
      • time.time() - start는 지금까지 지난 시간입니다.
      • 그 시간이 5초보다 작으면 반복
    • print("반복 중...") 출력
    • time.sleep(1) → 1초 멈춘 후 다시 실행

    📝 문제1] 3초간 숫자를 매초 1씩 증가시키며 출력하세요.

    ✅ 정답 코드:

    import time 
    
    start = time.time() # 1000
    count = 1 
    
    while time.time() - start < 3:  # 1001 -  1000 = 1 < 3
    	print(count)     
    	count += 1     
    	time.sleep(1)
    

    🖨️ 출력 결과 예시:

    1 
    2 
    3
    

    🔍 해설:

    • 3초 동안 반복하면서 숫자를 1씩 증가시켜 출력
    • 매 반복마다 1초 쉬므로 정확히 3초간 3번 실행됨

    📝 문제2] 현재 시간부터 5초 후까지 남은 시간 카운트다운

    ✅ 정답 코드:

    import time 
    
    end = time.time() + 5  # 5초 후 시각 
    
    while time.time() < end:     
    	remaining = int(end - time.time())     
    	print("남은 시간:", remaining, "초")     
    	time.sleep(1)
    

    🖨️ 출력 결과:

    남은 시간: 5 초 
    남은 시간: 4 초 
    남은 시간: 3 초 
    남은 시간: 2 초 
    남은 시간: 1

    🔍 해설:

    • end는 종료 시간(현재 시각 + 5초)
    • end - time.time()은 남은 시간 계산
    • int()로 정수로 만들어 출력
    • 1초마다 줄어들며 카운트다운 동작

    📝 문제3] 1초 간격으로 현재 시각을 3번 출력하기

    ✅ 정답 코드:

    import time  
    
    i = 0 
    
    while i < 3:     
    	print("현재 시각:", time.strftime("%H:%M:%S"))     
    	time.sleep(1)     
    	i += 1
    

    🖨️ 출력 결과 예시:

    현재 시각: 23:12:37
    현재 시각: 23:12:38
    현재 시각: 23:12:39
    

    🔍 해설:

    • time.strftime()은 현재 시각을 형식에 맞게 출력해주는 함수예요.
    • "%H:%M:%S"는 시:분:초 형식
    • while문을 3번 반복하며 1초마다 출력

    ◽ 활용범위: while 반복문에 time 모듈을 결합하면
    시간 기반 자동화, 타이머, 애니메이션 대기, 센서 체크 루프 등
    다양한 현실적인 프로그램을 만들 수 있습니다.


    💭직접 풀어보세요.

    📝 문제1] 짝수만 출력하고 종료하기 숫자 1부터 100까지 중에서, 홀수일 때만 "건너뜀"을 출력하고,
    짝수는 그대로 출력하세요. 단, 숫자가 20보다 크면 반복을 종료하세요.

    ✨ 힌트:

    • i % 2 != 0 → 홀수
    • continue는 아래 코드를 건너뛰고 다음 반복으로 넘어갑니다.
    • break는 반복을 끝냅니다.
    • i += 1을 적절한 위치에 넣어야 합니다.

    🖨️ 출력 결과

    건너뜀  
    2  
    건너뜀  
    4  
    건너뜀  
    6  
    ...  
    건너뜀  
    20
    

    ✅ 정답 코드:

    i = 1
    
    while True:
        if i > 20:
            break
        if i % 2 != 0:
            print("건너뜀")
            i += 1
            continue
        print(i)
        i += 1
    

    🔍 해설:

    • i는 1부터 시작해서 1씩 증가
    • i % 2 != 0이면 홀수이므로 "건너뜀" 출력 후 continue → 다음 반복으로
    • 짝수는 그대로 출력됨
    • i > 20이 되면 break로 반복 종료
    • i += 1을 각 조건 블록 안에 정확히 넣어야 무한 루프를 방지함

    📝 문제2] 비밀번호 입력 시까지 반복 사용자가 "1234"라는 비밀번호를 입력할 때까지 반복합니다.
    정답을 입력하면 "접속 승인"을 출력하고 종료하세요.

    ✨ 힌트:

    • 사용자 입력은 input()
    • 정답 검사 → if password == "1234"
    • 맞으면 break

    🖨️ 출력 결과

    비밀번호를 입력하세요: 0000  
    비밀번호를 입력하세요: 1111  
    비밀번호를 입력하세요: 1234  
    접속 승인
    

    ✅ 정답 코드:

    while True:
        password = input("비밀번호를 입력하세요: ")
        if password == "1234":
            print("접속 승인")
            break
    

    🔍 해설:

    • 정답이 아니면 계속 반복
    • "1234" 입력 시만 break로 종료됨

    📝 문제3] 최대 3번만 반복하기 "반복합니다."라는 문장을 최대 3번까지만 출력하고, 그 이후에는 자동 종료되게 하세요.

    ✨ 힌트:

    • 반복 횟수는 i로 세기
    • if i >= 3: break

    🖨️ 출력 결과

    반복합니다.  
    반복합니다.  
    반복합니다.
    

    ✅ 정답 코드:

    i = 0
    while True:
        if i >= 3:
            break
        print("반복합니다.")
        i += 1
    

    🔍 해설:

    • i가 3 이상이 되면 반복 종료
    • 반복 중 i += 1로 횟수를 증가시켜야 무한 루프 방지

    📝 문제4] 사용자에게 계속 단어를 입력받아 출력하세요. 단, 입력한 단어가 "skip"이면 아무 일도 하지 말고 다음 입력을 받으세요.
    입력한 단어가 "exit"이면 프로그램을 종료하세요.

    ✨ 힌트:

    • "exit" 입력 시 → break로 종료
    • "skip" 입력 시 → continue로 출력 없이 다음 반복
    • 그 외에는 "입력한 값:"과 함께 그대로 출력

    🖨️ 출력 결과 (예시):

    입력하세요: hello  
    입력한 값: hello  
    입력하세요: skip  
    입력하세요: 123  
    입력한 값: 123  
    입력하세요: exit
    

    ✅ 정답 코드:

    while True:
        user_input = input("입력하세요: ")
        
        if user_input == "exit":
            break
        
        if user_input == "skip":
            continue
    
        print("입력한 값:", user_input)
    

    🔍 해설:

    • 무한 반복 구조 (while True)
    • "exit" 입력 시 break로 종료
    • "skip" 입력 시 continueprint()를 건너뛰고 다시 반복
    • 그 외 입력은 print()로 출력

    📝 문제5] 들여쓰기 오류 수정하기 다음 코드에는 오류가 있습니다. 문제를 고치세요.

    i = 0
    
    while i < 5:
    print(i)
    i += 1
    

    ✨ 힌트:

    • 파이썬은 들여쓰기가 매우 중요합니다.
    • 반복문 내부 코드는 반드시 들여쓰기 해야 합니다.

    🖨️ 출력 결과

    0  
    1  
    2  
    3  
    4
    

    ✅ 정답 코드:

    i = 0
    
    while i < 5:
        print(i)
        i += 1
    

    🔍 해설:

    • print()i += 1while 문 안에 있어야 하므로 들여쓰기 필수
    • 파이썬은 블록 구분을 들여쓰기로 하며, 보통 스페이스 4칸을 사용

    📝 문제6] 10보다 작은 수 건너뛰기 다음 리스트에서 10보다 작은 숫자는 건너뛰고,
    10 이상인 숫자만 출력되도록 코드를 완성하세요.

    numbers = [5, 15, 6, 20, 7, 25]
    
    for number in numbers:
        # 여기에 조건과 continue를 작성하세요
        print(number)
    

    ✨ 힌트:

    • number < 10이면 continue 사용
    • continue는 해당 반복을 건너뜁니다

    🖨️ 출력 결과

    15  
    20  
    25
    

    ✅ 정답 코드:

    numbers = [5, 15, 6, 20, 7, 25]
    
    for number in numbers:
        if number < 10:
            continue
        print(number)
    

    🔍 해설:

    • 5, 6, 7은 10보다 작기 때문에 continue로 출력 생략
    • 나머지 숫자만 출력됨

    📝 문제7] 음수 건너뛰기 다음 리스트에서 음수(-) 는 출력하지 말고, 양수만 출력되도록 코드를 완성하세요.

    numbers = [10, -5, 20, -3, 30]
    
    for num in numbers:
        # 음수이면 건너뛰도록 작성
        print(num)
    

    ✨ 힌트:

    • if num < 0: 조건을 사용하세요

    🖨️ 출력 결과

    10  
    20  
    30
    

    ✅ 정답 코드:

    numbers = [10, -5, 20, -3, 30]
    
    for num in numbers:
        if num < 0:
            continue
        print(num)
    

    🔍 해설:

    • -5, -3은 음수이므로 출력하지 않음
    • continue 덕분에 다음 반복으로 건너뜀

    📝 문제8] 빈 문자열 건너뛰기 다음 이름 리스트에서 빈 문자열("") 은 건너뛰고, 이름이 있을 때만 인사 메시지를 출력하세요.

    names = ["Alice", "", "Bob", "", "Charlie"]
    
    for name in names:
        # 빈 문자열이면 건너뛰도록 조건 작성
        print("안녕하세요,", name)
    

    ✨ 힌트:

    • if name == "" 조건을 사용
    • 문자열이 비었는지 확인하세요

    🖨️ 출력 결과

    안녕하세요, Alice  
    안녕하세요, Bob  
    안녕하세요, Charlie
    

    ✅ 정답 코드:

    names = ["Alice", "", "Bob", "", "Charlie"]
    
    for name in names:
        if name == "":
            continue
        print("안녕하세요,", name)
    

    🔍 해설:

    • 빈 문자열은 출력하지 않음
    • 인사 메시지는 이름이 있을 때만 출력됨

    📝 문제9] 특정 숫자(7)만 건너뛰기 다음 숫자 리스트에서 숫자 7만 건너뛰고 나머지 숫자는 모두 출력되도록 만드세요.

    numbers = [3, 5, 7, 9, 11]
    
    for n in numbers:
        # 숫자 7은 출력하지 않도록 작성
        print(n)
    

    ✨ 힌트:

    • if n == 7: 조건을 사용하세요

    🖨️ 출력 결과

    3  
    5  
    9  
    11
    

    ✅ 정답 코드:

    numbers = [3, 5, 7, 9, 11]
    
    for n in numbers:
        if n == 7:
            continue
        print(n)
    

    🔍 해설:

    • 숫자 7일 때만 출력하지 않고 다음 반복으로 넘어감
    • 나머지는 모두 출력됨

    📝 문제10] 위로 쌓는 삼각형 별 출력 다음과 같은 삼각형 형태로 별을 출력하는 코드를 작성하세요:

    *
    **
    ***
    ****
    *****
    

    ✨ 힌트:

    • 줄 수는 1~5
    • 각 줄의 별 개수는 줄 번호와 같음 → range(1, i + 1)

    ✅ 정답 코드:

    output = ""
    
    for i in range(1, 6):         # 줄 수: 1~5
        for j in range(1, i + 1): # 각 줄의 별 개수: 1~i
            output += "*"
        output += "\n"
    
    print(output)
    

    🔍 해설:

    • 바깥 i는 줄 수 (1~5)
    • 안쪽 j는 해당 줄에서 출력할 별 개수
    • 줄마다 줄바꿈 \n 추가

    📝 문제12] 무한히 점 찍기 while True를 사용해 . (점)을 줄바꿈 없이 계속 출력하는 코드를 작성하세요. 무한 반복되며 end="" 옵션을 활용해야 합니다.

    ✨ 힌트:

    • end=""을 지정하면 줄바꿈 없이 한 줄에 이어서 출력됨
    • Ctrl + C로 수동 종료

    🖨️ 출력 결과

    ..........................
    

    ✅ 정답 코드:

    while True:
        print(".", end="")
    

    🔍 해설:

    • while True:는 조건이 항상 True이므로 무한 반복됨
    • print(".", end="")는 줄바꿈 없이 .을 계속 이어서 출력

    📝 문제13] 종료 조건 만들기 사용자에게 계속 입력을 받아, "exit"을 입력하면 반복을 종료하는 코드를 작성하세요.

    ✨ 힌트:

    • 무한 반복 속에서 input()으로 사용자 입력 받기
    • if user_input == "exit":이면 break 사용

    🖨️ 출력 결과

    종료하려면 'exit'을 입력하세요: hello  
    종료하려면 'exit'을 입력하세요: test  
    종료하려면 'exit'을 입력하세요: exit
    

    ✅ 정답 코드:

    while True:
        user_input = input("종료하려면 'exit'을 입력하세요: ")
        if user_input == "exit":
            break
    

    🔍 해설:

    • "exit"이라는 특정 문자열을 입력해야 break로 반복문을 종료
    • 실시간 사용자 입력 대기 구조

    📝 문제14] 숫자를 입력받고 누적 합계 출력 사용자가 숫자를 계속 입력하도록 하고,
    0을 입력하면 종료하고 총합을 출력하는 코드를 작성하세요.

    ✨ 힌트:

    • 누적 변수 total = 0
    • 입력값은 int(input(...))
    • 0 입력 시 break

    🖨️ 출력 결과

    숫자를 입력하세요: 10  
    숫자를 입력하세요: 20  
    숫자를 입력하세요: 0  
    총합: 30
    

    ✅ 정답 코드:

    total = 0
    
    while True:
        num = int(input("숫자를 입력하세요: "))
        if num == 0:
            break
        total += num
    
    print("총합:", total)
    

    🔍 해설:

    • num == 0일 때 break
    • 그 외 숫자는 total에 계속 더해짐
    • 반복 종료 후 print()로 합계 출력

    📝 문제15] 실시간 명령 처리 시뮬레이션 사용자 입력을 계속 받으면서,

    • start를 입력하면 "시작합니다!"
    • stop을 입력하면 "멈춥니다!"
    • exit을 입력하면 종료
      되도록 하세요.

    ✨ 힌트:

    • 조건문 if, elif, else 사용
    • 종료 조건은 exit

    🖨️ 출력 결과

    명령어 입력: start  
    시작합니다!  
    명령어 입력: stop  
    멈춥니다!  
    명령어 입력: exit 
    

    ✅ 정답 코드:

    while True:
        command = input("명령어 입력: ")
        if command == "start":
            print("시작합니다!")
        elif command == "stop":
            print("멈춥니다!")
        elif command == "exit":
            break
        else:
            print("알 수 없는 명령어입니다.")
    

    🔍 해설:

    • 다양한 조건을 처리할 수 있도록 분기
    • exit 입력 시만 루프 종료

    📝 문제16] 다음 리스트에서 인덱스 번호와 해당 요소를 함께 출력하는 코드를 작성하세요.

    array = [273, 32, 103, 57, 52]
    

    다음과 같은 형식으로 출력되도록 하세요:

    0번째 반복: 273  
    1번째 반복: 32  
    2번째 반복: 103  
    3번째 반복: 57  
    4번째 반복: 52
    

    ✨ 힌트:

    • range(len(array))는 인덱스를 하나씩 꺼낼 수 있음
    • array[i]로 해당 인덱스의 값을 가져올 수 있음
    • 문자열 포맷팅 사용: print("{}번째 반복: {}".format(i, array[i]))

    ✅ 정답 코드:

    array = [273, 32, 103, 57, 52]
    
    for i in range(len(array)):
        print("{}번째 반복: {}".format(i, array[i]))
    

    🔍 해설:

    • len(array)는 리스트 길이 → 5
    • range(5)0, 1, 2, 3, 4를 순서대로 반복
    • array[i]를 이용해 해당 위치의 값을 가져옴
    • i는 인덱스, array[i]는 실제 값

    📝 문제17] 역방향 반복문 다음과 같이 숫자 4부터 0까지 거꾸로 출력하는 코드를 작성하세요:

    현재 반복 변수: 4  
    현재 반복 변수: 3  
    현재 반복 변수: 2  
    현재 반복 변수: 1  
    현재 반복 변수: 0
    

    ✨ 힌트:

    • range(start, stop, step)에서
      start=4, stop=-1, step=-1
    • 또는 reversed(range(5)) 사용

    ✅ 정답 코드: range() 사용

    for i in range(4, -1, -1):  # 4부터 0까지 감소
        print("현재 반복 변수: {}".format(i))
    

    ✅ 정답 코드: reversed() 사용

    for i in reversed(range(5)):  # 0~4를 뒤집어서 반복
        print("현재 반복 변수: {}".format(i))
    

    🔍 해설: range(4, -1, -1): 4부터 0까지(0이면 -1, 1이면 2로 한개씩 뺀다.) -1 감소 reversed(range(5)): 0~4까지 생성된 range를 뒤집어서 반복


    📝 문제18] 반복 변수를 이용한 while 반복문 변수 i를 사용하여, 0부터 9까지 총 10번 반복하면서
    다음과 같은 형식으로 출력되도록 코드를 작성하세요:

    0번째 반복입니다.  
    1번째 반복입니다.  
    2번째 반복입니다.  
    ...  
    9번째 반복입니다.
    

    ✨ 힌트:

    • 반복 조건은 i < 10
    • 반복마다 i1씩 증가시켜야 함
    • 문자열 안에 변수 i를 넣으려면 format() 또는 f-string 사용

    🖨️ 출력 결과

    0번째 반복입니다.  
    1번째 반복입니다.  
    2번째 반복입니다.  
    3번째 반복입니다.  
    4번째 반복입니다.  
    5번째 반복입니다.  
    6번째 반복입니다.  
    7번째 반복입니다.  
    8번째 반복입니다.  
    9번째 반복입니다.
    

    ✅ 정답 코드:

    i = 0  # 반복 변수 초기화
    
    while i < 10:
        print("{}번째 반복입니다.".format(i))
        i += 1  # 반복 변수 증가
    

    🔍 해설: ==i = 0== -> 반복 변수 초기값 (0부터 시작) ==while i < 10:== -> i가 10보다 작을 동안 반복 ==print(...format(i))== -> 현재 반복 횟수를 출력 ==i += 1== -> i를 1씩 증가시켜 반복 조건에 도달하도록 함


    📝 문제19] 리스트에서 특정 값 모두 제거하기 다음 리스트가 주어졌을 때, 숫자 2를 리스트에서 모두 제거하고,
    남은 값을 출력하는 코드를 작성하세요.

    list_test = [1, 2, 1, 2]
    value = 2
    
    # 이 아래에 while문을 작성해서 value를 모두 제거하세요
    
    print(list_test)
    

    ✨ 힌트:

    • value in list_test는 해당 값이 리스트에 아직 존재하는지 확인
    • list.remove(value)는 해당 값을 한 개씩 제거
    • while문을 사용해 여러 번 반복해서 모두 제거

    🖨️ 출력 결과

    [1, 1]
    

    ✅ 정답 코드:

    list_test = [1, 2, 1, 2]
    value = 2
    
    while value in list_test:
        list_test.remove(value)
    
    print(list_test)
    

    🔍 해설: 시작 전 [1, 2, 1, 2] 초기 리스트 상태 1회차 실행 [1, 1, 2] 첫 번째 2 제거 2회차 실행 [1, 1] 두 번째 2 제거 3회차 조건 2 없음 → 종료 더 이상 2가 없으므로 반복 종료됨


    📝 문제20] 5초 동안 몇 번 반복할 수 있는지 측정하기 파이썬의 time 모듈을 사용하여, 5초 동안 while 반복문이 몇 번 실행되는지 측정하는 프로그램을 완성하세요.

    다음 코드를 보고 빈칸을 채워보세요:

    import time
    
    number = 0
    
    target_tick = ___________ + 5
    
    while time.time() < ___________:
        number += 1
    
    print("5초 동안 {}번 반복했습니다.".format(___________))
    

    ✨ 힌트:

    • time.time() → 지금 시간을 초로 알려줌
    • target_tick은 현재 시간에서 5초 뒤 시각
    • 마지막 출력에는 반복 횟수를 출력해야 하므로 number

    🖨️ 출력 결과 (출력 수치는 컴퓨터 성능에 따라 달라짐)

    5초 동안 18739562번 반복했습니다.
    

    ✅ 정답 코드:

    import time
    
    number = 0
    
    target_tick = time.time() + 5
    
    while time.time() < target_tick:
        number += 1
    
    print("5초 동안 {}번 반복했습니다.".format(number))
    

    🔍 해설: time.time() 지금 시각 (초 단위 실수) target_tick = time.time() + 5 5초 뒤 시각 설정 while time.time() < target_tick: 5초가 지나기 전까지 계속 반복 number += 1 반복 횟수 1씩 증가 print(...format(number)) 반복이 끝나면 몇 번 반복했는지 출력


    📝 문제21] 10부터 1까지 while문으로 출력해보세요.

    ✅ 정답 코드:

    num = 10 
    while num >= 1:     
    	print(num)     
    	num -= 1
    

    🖨️ 출력 결과:

    10 
    9 
    8 
    7 
    6 
    5 
    4 
    3 
    2 
    1
    

    🔍 해설:

    • num은 10부터 시작
    • num >= 1 조건이 참인 동안 반복
    • 반복할 때마다 num을 1씩 감소 → 1까지 출력됨

    📝 문제22] 사용자에게 계속 숫자를 입력받다가 0을 입력하면 종료하기

    ✅ 정답 코드:

    num = -1 
    while num != 0:     
    	num = int(input("숫자 입력 (0 입력 시 종료): "))
    

    🖨️ 출력 예시:

    숫자 입력 (0 입력 시 종료): 3 
    숫자 입력 (0 입력 시 종료): 7 
    숫자 입력 (0 입력 시 종료): 0
    

    🔍 해설:

    • 초기값을 0이 아닌 값으로 설정해야 반복이 시작됨
    • input()으로 값을 계속 입력받고, int()로 숫자로 변환
    • 입력값이 0이면 조건 num != 0이 거짓이 되어 반복 종료

    📝 문제23] 사용자에게 숫자를 계속 입력받아 짝수만 누적 합산하세요.
    0을 입력하면 프로그램을 종료하고, 총 입력된 수의 개수와 짝수 누적합을 출력하세요.

    🖨️ 예시 실행:

    숫자 입력 (0 입력 시 종료): 5  
    숫자 입력 (0 입력 시 종료): 8  
    숫자 입력 (0 입력 시 종료): 3  
    숫자 입력 (0 입력 시 종료): 10  
    숫자 입력 (0 입력 시 종료): 04개의 숫자를 입력했습니다.  
    짝수의 합계는 18입니다.
    

    🔍 해설:

    • count는 입력된 숫자의 총 개수 (0 제외)
    • num % 2 == 0 조건을 통해 짝수만 골라 누적
    • break0이 입력되면 즉시 반복 종료
    • 반복 종료 후 요약 결과를 출력 (실무 보고서 스타일)
    TOP
    preload preload